<?php

class Paciente extends AppModel {
	
	var $belongsTo = array('Profissao','EstadoCivil','Cidade');
	
	var $hasMany = array(
		'Agenda',
		'HistoricoAgendamento',
		'ListanegraMedicopaciente',
		'PacienteConvenio',
		'ListaEspera'
	);
	
	var $actsAs = array('DateFormatter');
	
	var $displayField = 'nome';

	var $validate = array(
        'nome' => array(
            'vazio' => array(
                'rule' => 'notEmpty',
                'required' => true,
                'message' => 'Nome deve ser informado!',
                'last' => true
			)
		),
		'data_nascimento' => array(
            'vazio' => array(
                'rule' => 'notEmpty',
                'required' => true,
                'message' => 'A Data de Nascimento deve ser informada!',
                'last' => true
			)
		),
			
	);
	
	/*
	public function carregar_primeira_vez() {
		return array(
			'N' => 'Não',
			'S' => 'Sim'
		);
	}
	*/
	
	public function get_convenios_list($paciente_id, $formato = 'html') {
		
		$options['conditions'] = array('paciente_id' => $paciente_id, 'ativo' => 'S');
		$options['fields'] = array('Convenio.id','Convenio.nome');
		$options['recursive'] = 0;
		
		$results = $this->PacienteConvenio->find('list', $options);
		
		$retorno = null;
		$selected = "selected='selected'";

		foreach ($results as $id => $nome) {
			if ($formato == 'html') {
				$retorno .= "<option value='{$id}' $selected>{$nome}</option>";
				$selected = null;
			} else {
				$retorno[$id] = $nome;
			}
		}
		
		//---- Acrescentando Particulares:
		
		$results = $this->PacienteConvenio->Convenio->find('list', array('conditions' => array('nome ILIKE' => 'PARTICULAR%')));

		foreach ($results as $id => $nome) {
			if ($formato == 'html') {
				$retorno .= "<option value='{$id}'>* {$nome}</option>";
			} else {
				$retorno[$id] = '* ' . $nome;
			}
		}		
		
		return $retorno;		
		
	}
	
	public function get_data_ultimo_atendimento($id, $medico_id) {
		$obj = $this->HistoricoAgendamento->find('first', 
			array(
				'conditions' => 
					array(
						'paciente_id' => $id, 
						'medico_id' => $medico_id, 
						'situacao' => '4'
					),
				'order' => 'paciente_id, medico_id, data_agenda DESC'
			)
		);
		
		return $obj['HistoricoAgendamento']['data_agenda'];
	}

	public function get_list_pacientes($exibirNasc = true) {
		
		$retorno = array();
		
		if ($exibirNasc) {
			$results = $this->find('all', array('recursive' => 0, 'order' => array('Paciente.nome'), 'fields' => array('Paciente.id','Paciente.nome','Paciente.data_nascimento')));
			foreach ($results as $rs) {
				$retorno[$rs['Paciente']['id']] = $rs['Paciente']['nome'] . ' (' . $rs['Paciente']['data_nascimento'] . ') ';
			}
		} else {
			$retorno = $this->find('list', array('order' => array('nome'))); 	
		}
		
		return $retorno; 
	}	
	
	public function primeira_vez($id, $medico_id) {
		return ($this->HistoricoAgendamento->find('count', array('conditions' => array('paciente_id' => $id, 'medico_id' => $medico_id, 'situacao' => '4'))) > 0) ? false : true;
	}
	
	public function is_cadastrado($paciente_nome, $paciente_dn) {
		$paciente_dn = $this->date_to_us($paciente_dn);
		return ($this->find('first', array('conditions' => array('nome' => $paciente_nome, 'data_nascimento' => $paciente_dn)))) ? true : false;
	}
	
}